/*
 * 文件名：PageSepeHelper.java
 * 版权：Copyright 2002-2007 Huawei Tech. Co. Ltd. All Rights Reserved.
 * 描述：
 * 修改人：t60021625
 * 修改时间：2007-3-14
 * 跟踪单号：
 * 修改单号：
 * 修改内容：新增
 */
package com.sunshade.common.page;

import javax.servlet.http.HttpServletRequest;

/**
 * 分页工具类〈一句话功能简述〉
 * 该工具类包含2部分：
 * 1.封装action层分页操作.
 * @author t60021625
 * @version 2007-3-14
 * @see PageSepeHelper
 * @since
 */
public class PageSepeHelper
{
    
    /**
     * 
     * Description: 测试是否需要重新生成分页信息 (验证firstload和first是否等于1) <br>
     * 1、重新生成分页信息 的一般含义为： <br>
     * 2、第一次进入页面，获取所有数据（无查询条件）<br>
     * 3、PageSize更改<br>
     * 4、…<br>
     *
     * @param request
     * @return boolean 
     * @exception/throws [违例类型] [违例说明]
     */
    public boolean isFirstLoad(HttpServletRequest request)
    {
        return "1".equals(request.getParameter("firstLoad"))
                || "1".equals(request.getParameter("first"));
    }
    
    /**
     * 
     * Description: 获取分页类对象（用于数据库分页）<br>
     * 1、该函数内部已经封装了是否为FirstLoad的情况<br>
     * 2、…<br>
     * 3、…<br>
     * 4、…<br>
     *
     * @param request ：请求对象
     * @param rowcount ：当前查询条件下的记录数
     * @return PageSeparate 
     * @exception/throws [违例类型] [违例说明]
     */
    public PageSeparate setPageSeparateContentForDb(HttpServletRequest request,
            int rowcount)
    {
        PageSeparate pageSeparate = null;
        // 如果是第一次载入查询结果页面，则将全局属性PageSeparate置为空，重新生成一个分页类的对象
        String pageSize = request.getParameter("pageSize");
        
        if (pageSize == null || "".equals(pageSize.trim()))
        {
            pageSize = (String)request.getSession().getAttribute("pageSize");
            if (pageSize == null || "".equals(pageSize))
            {
                pageSize = String.valueOf(10);
            }
        }
        
        //是否生成分页类对象
        if (isFirstLoad(request))
        {
            //删除可能存在的其他页面的PageSeparate对象
            request.getSession().removeAttribute("PageSeparate");
            pageSeparate = new PageSeparate(rowcount,
                    Integer.parseInt(pageSize));
        }
        else
        {
            pageSeparate = (PageSeparate)request.getSession()
                    .getAttribute("PageSeparate"); // 使用已有的分页类
            // 重新计算记录条数，为了避免删除和添加记录后不能正确显示出来
            pageSeparate.setRowCount(rowcount);
            
            String command = request.getParameter("command"); // 得到从页面返回的参数，上一页还是下一页
            if ("next".equals(command))
            {
                pageSeparate.nextPage(); // 向后翻页
            }
            else if ("prev".equals(command))
            {
                pageSeparate.prevPage(); // 向前翻页
            }
            else if ("current".equals(command))
            {
                String curPage = request.getParameter("currentPage");
                pageSeparate.setNowPage(Integer.parseInt(curPage));
            }
        }
        
        //        request.setAttribute("pageSize", pageSize);
        request.getSession().setAttribute("pageSize", pageSize);
        
        request.setAttribute("currentPage",
                String.valueOf(pageSeparate.getNowPage()));
        
        request.setAttribute("pageListSize",
                String.valueOf(pageSeparate.getPageCount()));
        
        //4.将分页对象存入session
        request.getSession().setAttribute("PageSeparate", pageSeparate);
        
        return pageSeparate;
        
    }
    
}